package com.shujia.wyh.day19;

import java.util.LinkedList;

/*
        LinkedList:底层数据结构是双链表，查询慢，增删快，线程不安全，效率高。

        因为LinkedList底层是链表，所以有了头和尾的概念，就多了一些特有的功能
        LinkedList类特有功能
            添加功能：
                public void addFirst(E e)及addLast(E e)
            获取功能：
                public E getFirst()及getLast()
            删除功能：
                public E removeFirst()及public E removeLast()

 */
public class LinkedListDemo1 {
    public static void main(String[] args) {
        //创建LinkedList集合对象
        LinkedList linkedList = new LinkedList();

        //向集合中添加元素
        linkedList.add("hello");
        linkedList.add("world");
        linkedList.add("java");
        linkedList.add("bigdata");
        linkedList.add("hadoop");
        linkedList.add("hive");
        linkedList.add("spark");

        System.out.println(linkedList);
        System.out.println("====================================");
        //public void addFirst(E e)在该列表开头插入指定的元素。
        linkedList.addFirst("hbase");
        System.out.println(linkedList);
        //public void addLast(E e)将指定的元素追加到此列表的末尾。
        //从效果上来看，和add()方法效果一样
//        linkedList.addLast("sqoop");
//        linkedList.add("sqoop");
        System.out.println(linkedList);

        System.out.println("=====================================");
        //public E getFirst()返回此列表中的第一个元素。
//        Object first = linkedList.getFirst();
//        System.out.println(first);
        Object first = linkedList.get(0);
        System.out.println(first);
        System.out.println(linkedList);
        //public E getLast()返回此列表中的最后一个元素。
//        Object last = linkedList.getLast();
//        System.out.println(last);
        Object last = linkedList.get(linkedList.size() - 1);
        System.out.println(last);
        System.out.println(linkedList);

        System.out.println("====================================");
        //public E removeFirst()从此列表中删除并返回第一个元素。
        Object o = linkedList.removeFirst();
        System.out.println(o);
        System.out.println(linkedList);
        //public E removeLast()从此列表中删除并返回最后一个元素。
        Object o1 = linkedList.removeLast();
        System.out.println(o1);
        System.out.println(linkedList);
        System.out.println("===================================");
        LinkedList list2 = new LinkedList();
        list2.add("flink");
        System.out.println(list2);
//        Object o2 = list2.removeFirst();
//        System.out.println(o2);
//        System.out.println(list2);
        Object o2 = list2.removeLast();
        System.out.println(o2);
        System.out.println(list2);

    }
}
